package com.huahua.api.util;


import com.huahua.api.exception.CommonException;
import org.dromara.hutool.core.collection.CollUtil;
import org.dromara.hutool.core.text.StrUtil;
import org.dromara.hutool.core.util.BooleanUtil;
import org.dromara.hutool.core.util.ObjUtil;

import java.util.Collection;

/**
 * @author LoveHuahua
 * @date 2022年03月26日 16:02
 * @description believe in yourself
 */
public class CheckUtil {

//    /**
//     * 如果是空 那么抛出异常
//     *
//     * @param collection 集合
//     * @param errorCode  错误码
//     */
//    public static void checkNotEmpty(Collection<?> collection, ErrorCode errorCode) {
//        if (CollUtil.isEmpty(collection)) {
//            throw new MyException(errorCode);
//        }
//    }

    public static void checkNotEmpty(Collection<?> collection, RuntimeException exception) {
        if (CollUtil.isEmpty(collection)) {
            throw exception;
        }
    }

    public static void checkNotEmpty(Collection<?> collection, String exception) {
        if (CollUtil.isEmpty(collection)) {
            throw new RuntimeException(exception);
        }
    }


//    /**
//     * 如果是空 那么抛出异常
//     *
//     * @param object    对象
//     * @param errorCode 错误码
//     */
//    public static void checkNotNull(Object object, ErrorCode errorCode) {
//        if (object == null) {
//            throw new MyException(errorCode);
//        }
//    }

//    /**
//     * 检测是否为true
//     *
//     * @param condition 条件
//     * @param errorCode 错误代码
//     */
//    public static void checkTrue(boolean condition, ErrorCode errorCode) {
//        if (!condition) {
//            throw new MyException(errorCode);
//        }
//    }

//    public static void checkFalse(boolean condition, ErrorCode errorCode) {
//        checkTrue(!condition, errorCode);
//    }

    public static void checkFalse(boolean condition, RuntimeException e) {
        checkTrue(!condition, e);
    }


    public static void checkNotNull(Object object, RuntimeException exception) {
        checkTrue(ObjUtil.isNotNull(object), exception);
    }

    /**
     * 检查字符串不为空 为空会抛出异常
     *
     * @param str       str
     * @param exception 例外
     */
    public static void checkStrNotBlank(String str, RuntimeException exception) {
        checkTrue(StrUtil.isNotBlank(str), exception);
    }

    public static void checkStrNotBlank(String str, String exception) {
        checkTrue(StrUtil.isNotBlank(str), new CommonException(exception));
    }


    /**
     * 检查{condition}一定为true,否则为false
     *
     * @param condition 条件
     * @param exception 异常
     */
    public static void checkTrue(Boolean condition, RuntimeException exception) {
        if (!BooleanUtil.isTrue(condition)) {
            throw exception;
        }
    }

    /**
     * 检查{condition}一定为true,否则为false
     *
     * @param condition 条件
     * @param exception 异常
     */
    public static void checkTrue(Boolean condition, String exception) {
        checkTrue(condition, new CommonException(exception));
    }
}
